Image processing for display is typically done in a raster fashion where pixels are processed serially starting from the left most pixel in the upper most row in a frame and proceeding down through the frame row by row such that all pixels in any particular row are processed together. While processing a given pixel in one row of the frame a pixel processing algorithm or “filter kernel” may need to access surrounding vertical pixels. However, because pixels are usually serially scanned in a raster fashion through a typical processing pipeline the surrounding vertical pixels may not be immediately available.
A common solution to accessing surrounding vertical pixels is to use line buffers to store pixels of the rows surrounding the pixel being processed so that those vertical pixels are readily available to the filter being implemented. Thus, for example, to use a five-by-five (5×5) two-dimensional (2D) filter kernel the common solution is to employ four line buffers to store the pixels of the four surrounding rows. For a 9×9 2D filter eight line buffers need to be employed. However, line buffers are costly to implement. This is particularly true in full high-definition (HD) image processing where each line buffer is typically wide enough to store at least 1,920 pixel values. For a typical image processing pipeline employing multiple filter kernels the expense associated with using full width line buffers can become prohibitive.